Материалы

Описание проекта

Ритейл — Анализ программы лояльности

Менеджер магазина строительных материалов "Строили, строили и наконец построили", отвечающий за программу лояльности клиентов, хочет оценить её эффективность.

Цель исследования — необходимо проанализировать программу лояльности магазина.

Задачи исследования:

Провести исследовательский анализ данных;
Провести анализ программы лояльности;
Сформулировать и проверить статистические гипотезы.

Ход исследования:
Шаг 1. Загрузка данных и предобработка данных
Шаг 2. Анализ данных
Шаг 3. Анализ программы лояльности
Шаг 4. Проверка гипотез
Выводы и рекомендации

Описание данных

Файл retail_dataset.csv:

Файл product_codes.csv:

Шаг 1. Загрузка данных и предобработка данных

Загрузка данных и изучение общей информации

Общее кол-во записей в датасете retail_dataset 105335. В датасете product_codes 9969.
Пропуски присутсвуют в столбце : CustomerID

Следут привести название всех столбцов к нижнему регистру.

Столбец purchasedate преобразовать в "datetime64". Столбцы CustomerID и loyalty_program преобразовать "int64".

Проверка наименований колонок

Заменили название столбцов на удобные

Проверка дубликатов

Дубликатов в датасете retail_dataset оказалось 1033, что состовляет 1%.
Удалили все полные дубликаты.

В таблице присутствуют значения item_id, которым соответствует несколько указаний с ценой- это как числовые, так и буквенные идентификаторы.

Проверим на уникальность.

Для некоторых товаров есть несколько вариантов цен. Посчитаем их количество

2494 - большое значение.
Лучше заменить на медийное значение.

Заменили на медийное значение товары с несколькими вариантами цен.

Проверка пропущенные значений

В столбце customer_id присутствуют 36 тысяч пропущенных значений или 34.66%.

Количество покупателей, участвующих в программе лояльности среди покупателей с пропущенным значением равно нулю. То есть эти покупатели не является участником программы лояльности.

Количества покупок варьируются в очень большом диапазоне от 5567 до -2601. Выявить взаимосвязь между пропущенным значением и количеством покупок на данном этапе не представляется возможным.

Тогда заменим пропуски на нули.

Заменили пропуски на нули.

Проверка соответствие типов

Изменили типы данных у столбца purchase_date на "datetime64", а у столбцов customer_id и loyalty_program на "int64"

Добавления столбцов

Добавили столбцы с годом, месяцем, неделей и датой

Объединили две таблицы в одну с названием retail

Добавили столбц с общей суммой покупки

Вывод

Заменили название столбцов на удобные.

Дубликатов в датасете retail_dataset оказалось 1033, что состовляет 1%.
Удалили все полные дубликаты.

В таблице присутствуют значения item_id, которым соответствует несколько указаний с ценой- это как числовые, так и буквенные идентификаторы.
Заменили на медийное значение товары с несколькими вариантами цен.

В столбце customer_id присутствуют 36 тысяч пропущенных значений или 34.66%.
Заменили пропуски на нули.

Изменили типы данных у столбца purchase_date на "datetime64", а у столбцов customer_id и loyalty_program на "int64".

Добавили столбцы с годом, месяцем, неделей и датой.
Добавили столбц с общей суммой покупки.

Объединил две таблицы в одну с названием retail.

Шаг 2. Анализ данных

Анализ выбросов данных

Посмотрим данные на выбросы, в том числе на наличие нулевых и отрицательных значений.

Нулевые значения присутствуют в столбцах - quantity, price_per_one.

Товары с нулевым количеством появляются не только в чеках с картой лояльности.

Количество уникальных товаров с нуливым значением в чеке дастоточное большое.

Нулевые значения в столбце price_per_one присутствуют только у покупателей без карты и у не большого количества товаров.

Нулевые значения указаны для различных позиций, это не одинаковые позиции, количество их также разное, вероятнее всего это акционные товары, которые даются бонусом к покупке, однако это также может быть некий сбой программы

Рассмотрим отрицательны значения

Отрицательные значения присутствуют только в столбце quantity.

Предположим, что отрицательные значения это возварты.

Среды отрицательных значений столбца quantity чаще всего встречается дополнительное значение в столбце purchase_id в виде буквы C, что скорей всего означает возврат товара.

Построим графики распределения признаков.

На графике quantity присутствуют единичные выбросы для значений количества товаров более 20000 и -20000 шт, так как таких значений немного - мы их отбросим.
Также на графике price_per_one присутствует незначительное количество товаорв ценой более 1000 - возможно это дорогостоящие элементы, однако при анализе целесообразно их отбросить, так как они будут давать сильное искажение по общей сумме товара и затруднят прогнозирование.

Удалили по 1 перцентилю с каждой стороны в столбце quantity и 1 перцентиль верхний границы в столбце price_per_one

После удаления число выбросов общее количество записей 101672, то есть менее чем 3% записей исчез в результате удаления выбросов

Анализ магазинов

Shop 0 явно самый крупный магазин сети. Это либо интернет магазин, либо оптовый склад.
В тройку лидеров входят магазины номер 4, 1 и 6. Есть магазинов, где продали менее 100 позиций.

Период вы располагаемых данных

Наблюдения распределены по временной шкале примерно равномерно, делать срез данных за какой-то определенный адекватный период не требуется.
В датасете отсутсвуют данные за период с 24 декабря 2016 по 3 января 2017.

Соотношение покупателей с картой и без нее

Клиентов с картой лояльности в 3 раза меньше, чем обычных покупателей.

Вывод

Были удалены выбросы, общее количество записей стало 104289.

Shop 0 явно самый крупный магазин сети. Это либо интернет магазин, либо оптовый склад.
В тройку лидеров входят магазины номер 4, 1 и 6. Есть магазинов, где продали менее 100 позиций.

Наблюдения распределены по временной шкале примерно равномерно, делать срез данных за какой-то определенный адекватный период не требуется.
В датасете отсутсвуют данные за период с 24 декабря 2016 по 3 января 2017.

Клиентов с картой лояльности в 3 раза меньше, чем обычных покупателей.

Шаг 3. Анализ программы лояльности

Количество уникальных покупателей в день, неделю и месяц

Ежедневных уникальный покупателей без карты лояльности регулярно больше.

Уникальный покупателей в неделю без карты лояльности так же больше.

По месяцам количество уникальных пользователей без карты лояльности больше, чем с ней примерно в два раза.

Большинство покупателей предпочитают не участвовать в программе лояльности магазина.

Юнит-экономика

Покупатели без карты лояльности чаще совершают покупки.

Среднее количество товаров на пользователя в месяц без карты лояльности выше, чем с ней.
Стоит отметить, что покупатели с картой каждый месяц покупают все больше товаров.

Среднее количество товаров в одном чеке в месяц с картой лояльности выше, чем с без нее.
Программа лояльности стимулирует покупать больше товаров.

Средний чек

Средний чек без карты лояльности на графике по месяцам выше, чем с ней на протяжении всех месяцев наблюдений.

LVT

В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, чем у покупателей без карты лояльности.

Выручка от продажи карт лояльности на каждый месяц

В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, даже с учетом стоимости покупки карты.

Вывод

Большинство покупателей предпочитают не участвовать в программе лояльности магазина.

Покупатели без карты лояльности чаще совершают покупки.

Среднее количество товаров на пользователя в месяц без карты лояльности выше, чем с ней.

Среднее количество товаров в одном чеке в месяц с картой лояльности выше, чем с без нее.
Программа лояльности стимулирует покупать больше товаров.

Средний чек без карты лояльности на графике по месяцам выше, чем с ней на протяжении всех месяцев наблюдений.

В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, чем у покупателей без карты лояльности.

Программа лояльности не работает, не повышает средний чек, но стимулирует брать большее количество товаров.
В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, даже с учетом стоимости покупки карты.

Шаг 4. Проверка гипотез

Среднее количество покупаймых товаров с картой и без нее

Нулевая гипотеза: среднее количество покупаймых товаров с картой лояльности и без неё не отличается.
Альтернативная гипотеза: среднее количество покупаймых товаров с картой лояльности и без неё будет разным.

Так как у нас две назависимые выборки, а в данных есть выбросы, то для проверки гипотезы, будем пользоваться критерием Манна-Уитни.

Необходимо отвергнуть нулевую гипотезу. Количество товаров в чеке отличается в зависимости от факта наличия карты лояльности.

Средний чек с картой и без нее

Нулевая гипотеза: средний чек с картой программы лояльности и без неё не отличается.

Альтернативная гипотеза: средний чек с картой лояльности отличается от среднего чека без неё

Так как у нас две назависимые выборки, а в данных есть выбросы, то для проверки гипотезы, будем пользоваться критерием Манна-Уитни.

Придется отвергнуть нулевую гипотезу и признать, что средний чек с картой лояльности и без значительно отличается.

Вывод

По результатам статистического анализа установили, что в средних расходах и среднем количестве покупок у покупателей, участвующих в программе лояльности и нет, существуют статистически значимые различия, то есть клиенты не участвующие в программе лояльности тратят больше и покупают часто.

Программа лояльности не работает.

Выводы и рекомендации

Вывод

Было изучено и проведена предобработка данных:

Заменили название столбцов на удобные.
Дубликатов в датасете retail_dataset оказалось 1033, что состовляет 1%.
Удалили все полные дубликаты.
Заменили на медийное значение товары с несколькими вариантами цен.
Заменили пропуски на нули.
Изменили типы данных у столбца purchase_date на "datetime64", а у столбцов customer_id и loyalty_program на "int64".
Добавили столбцы с годом, месяцем, неделей, датой и общей суммой покупки.
Объединил две таблицы в одну с названием retail.

Аналих Данных:

Были удалены выбросы, общее количество записей стало 104289.
Shop 0 явно самый крупный магазин сети. Это либо интернет магазин, либо оптовый склад.
В тройку лидеров входят магазины номер 4, 1 и 6. Есть магазинов, где продали менее 100 позиций.
Наблюдения распределены по временной шкале примерно равномерно, делать срез данных за какой-то определенный адекватный период не требуется.
В датасете отсутсвуют данные за период с 24 декабря 2016 по 3 января 2017.

Аналих программы лояльности:

Большинство покупателей предпочитают не участвовать в программе лояльности магазина.
Покупатели без карты лояльности чаще совершают покупки.
Среднее количество товаров на пользователя в месяц без карты лояльности выше, чем с ней.
Среднее количество товаров в одном чеке в месяц с картой лояльности выше, чем с без нее.
Программа лояльности стимулирует покупать больше товаров.
Средний чек без карты лояльности на графике по месяцам выше, чем с ней на протяжении всех месяцев наблюдений.
В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, чем у покупателей без карты лояльности.
В рамках когортного анализа расчёта LTV выручка покупателей c картой лояльности меньше, даже с учетом стоимости покупки карты.

Программа лояльности не работает, не повышает средний чек, но стимулирует брать большее количество товаров.

Проверка гипотиз:

По результатам статистического анализа установили, что в средних расходах и среднем количестве покупок у покупателей, участвующих в программе лояльности и нет, существуют статистически значимые различия, то есть клиенты не участвующие в программе лояльности тратят больше и покупают часто.

Программа лояльности не работает.

Рекомендации

Нужно поменять программу лояльности или совсем отказаться от нее.
Необходимо посмотреть данные за более продолжительный период, например за год, так как возможно покупатели с картой лояльности ждут начала сезона.
Стоит изучить большие или оптовые продажи.
В чеках содержится довольно много бесплатных товаров, если это всё подарки, то нужно выяснить насколько это окупается.